package br.com.eventime.control;

import java.io.Serializable;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.inject.Inject;

import br.com.eventime.component.DataModelList;
import br.com.eventime.entity.Evento;
import br.com.eventime.entity.Ramo;
import br.com.eventime.entity.TipoPagamento;
import br.com.eventime.entity.Usuario;
import br.com.eventime.service.ConfiguracaoService;

@ManagedBean(name = "configuracaoControl")
@SessionScoped
public class ConfiguracaoBean implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Inject
	private Ramo ramo;
	
	@Inject
	private Ramo ramoFiltro;
	
	@Inject
	private Evento evento;
	
	@Inject
	private Evento eventoFiltro;
	
	@Inject
	private TipoPagamento tipoPagamento;
	
	@Inject
	private TipoPagamento tipoPagamentoFiltro;
	
	@Inject
	private Usuario usuario;
	
	
	@EJB
	private ConfiguracaoService configuracaoService;

	private DataModelList<Ramo> listRamo;
	private DataModelList<Evento> listEvento;
	private DataModelList<TipoPagamento> listTipoPagamento;
	
	
	public String pesquisarRamo(){
		listRamo = new DataModelList<Ramo>(configuracaoService.getListRamo(ramoFiltro));
		return "/paginas/configuracao/ramo/ramoPrincipal.xhml";
	}
	
	public String pesquisarEvento(){
		listEvento = new DataModelList<Evento>(configuracaoService.getListEvento(eventoFiltro));
		return "/paginas/configuracao/evento/eventoPrincipal.xhml";
	}
	
	public String pesquisarTipoPagamento(){
		listTipoPagamento = new DataModelList<TipoPagamento>(configuracaoService.getListTipoPagamento(tipoPagamentoFiltro));
		return "/paginas/configuracao/tipoPagamento/tipoPagamentoPrincipal.xhml";
	}
	
	public String insereAlteraRamo(){
		configuracaoService.insereAlteraRamo(ramo);
		ramo = new Ramo();
		pesquisarRamo();
		return "/paginas/configuracao/ramo/ramoPrincipal.xhml";
	}
	
	public String insereAlteraEvento(){
		configuracaoService.insereAlteraEvento(evento);
		evento = new Evento();
		pesquisarEvento();
		return "/paginas/configuracao/evento/eventoPrincipal.xhml";
	}
	
	public String insereAlteraTipoPagamento(){
		configuracaoService.insereAlteraTipoPagamento(tipoPagamento);
		tipoPagamento = new TipoPagamento();
		pesquisarTipoPagamento();
		return "/paginas/configuracao/tipoPagamento/tipoPagamentoPrincipal.xhml";
	}
	
	public void deletaRamo(){
		configuracaoService.removeRamo(ramo);
		ramo = new Ramo();
		pesquisarRamo();
	}
	
	public void deletaEvento(){
		configuracaoService.removeEvento(evento);
		evento = new Evento();
		pesquisarEvento();
	}

	public void deletaTipoPagamento(){
		configuracaoService.removeTipoPagamento(tipoPagamento);
		tipoPagamento = new TipoPagamento();
		pesquisarTipoPagamento();
	}
	
	public DataModelList<Ramo> getListRamo() {
		if(listRamo == null) {
			listRamo = new DataModelList<Ramo>();
		}
		return listRamo;
	}

	public DataModelList<Evento> getListEvento() {
		if(listEvento == null) {
			listEvento = new DataModelList<Evento>();
		}
		return listEvento;
	}
	
	public DataModelList<TipoPagamento> getListTipoPagamento() {
		if(listTipoPagamento == null) {
			listTipoPagamento = new DataModelList<TipoPagamento>();
		}
		return listTipoPagamento;
	}

	public void setListRamo(DataModelList<Ramo> listRamo) {
		this.listRamo = listRamo;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Ramo getRamoFiltro() {
		return ramoFiltro;
	}

	public void setRamoFiltro(Ramo ramoFiltro) {
		this.ramoFiltro = ramoFiltro;
	}

	public Evento getEvento() {
		return evento;
	}

	public void setEvento(Evento evento) {
		this.evento = evento;
	}

	public Evento getEventoFiltro() {
		return eventoFiltro;
	}

	public void setEventoFiltro(Evento eventoFiltro) {
		this.eventoFiltro = eventoFiltro;
	}


	public void setListEvento(DataModelList<Evento> listEvento) {
		this.listEvento = listEvento;
	}

	public TipoPagamento getTipoPagamento() {
		return tipoPagamento;
	}

	public void setTipoPagamento(TipoPagamento tipoPagamento) {
		this.tipoPagamento = tipoPagamento;
	}

	public TipoPagamento getTipoPagamentoFiltro() {
		return tipoPagamentoFiltro;
	}

	public void setTipoPagamentoFiltro(TipoPagamento tipoPagamentoFiltro) {
		this.tipoPagamentoFiltro = tipoPagamentoFiltro;
	}

	public void setListTipoPagamento(DataModelList<TipoPagamento> listTipoPagamento) {
		this.listTipoPagamento = listTipoPagamento;
	}
	
	public Ramo getRamo() {
		return ramo;
	}

	public void setRamo(Ramo ramo) {
		this.ramo = ramo;
	}
	
	public void setConfiguracaoService(ConfiguracaoService configuracaoService) {
		this.configuracaoService = configuracaoService;
	}
	
	
}
